import {getOssConfig} from "../../service/auth";

Component({
    /**
     * 组件的属性列表
     */
    properties: {

    },

    /**
     * 组件的初始数据
     */
    data: {
        fileList: [],
    },

    /**
     * 组件的方法列表
     */
    methods: {
        /**
         * 文件超出大小
         */
        overSize() {
            wx.showToast({
                title: '文件不能超过5MB',
                icon: 'none'
            })
        },
        /**
         * 选择完文件触发
         */
        beforeRead(event) {
            const { file, callback } = event.detail;

            if (file.type !== 'image') {
                wx.showToast({
                    title: '请选择图片类型',
                    icon: 'none'
                })
                callback(false)
            } else {
                callback(true)
            }
        },
        /**
         * 读取完文件执行
         */
        afterRead(event) {
            const { file } = event.detail;

            wx.showLoading({title: '上传中..'})
            // 请求api, 获取oss上传的配置
            getOssConfig().then(res => {
                const {host, policy, accessid, signature} = res

                const key = 'upload/' + file.url.slice(11)

                // 上传图片到oss
                wx.uploadFile({
                    url: host, // 开发者服务器的URL。
                    filePath: file.url,
                    name: 'file', // 必须填file。
                    formData: {
                        key, // 文件名字, 保持唯一
                        policy,
                        OSSAccessKeyId: accessid,
                        signature,
                        // 'x-oss-security-token': securityToken // 使用STS签名时必传。
                    },
                    success: (res) => {
                        wx.hideLoading()
                        if (res.statusCode === 204) {
                            wx.showToast({
                                title: '上传成功',
                                icon: 'success'
                            })
                            // 如果显示了预览图, 就不能再次点击上传了
                            // this.setData({
                            //     fileList: [file]
                            // })
                            // 将文件的key, 传递给父组件, 让父组件做进一步的处理
                            this.triggerEvent('getfilekey', key)
                        }
                    },
                    fail: err => {
                        wx.hideLoading()
                        console.log(err);
                    }
                });
            })
        },

        /**
         * 删除图片
         */
        deleteImg() {
            this.setData({
                fileList: []
            })
        }
    }
})
